/**
 * Copyright (c)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * 
 * $Id: BaseService.java 2012-06-07 Ashton.J $
 */
package org.ashton.mybatis.base;

import java.io.Serializable;

import org.ashton.mybatis.page.Page;


/**
 * 基础服务接口类，给其它Service接口继承获取默认方法
 * 
 * @author  Ashton.J
 * @Version v1.0
 *
 * @param <T>  实体类型
 * @param <PK> 主键类型
 */
public interface BaseService<T, PK extends Serializable> {

    /** 
     * 主键查询
     * 
     * @param id    主键
     * @return
     */
    public T get(PK id);

    /**
     * 分页查询
     * 
     * @param page  分页对象，已设置分页参数
     * @param pageinateInfo 分页查询信息
     * @return
     */
    public Page<T> getPage(Page<T> page);

    /**
     * 持久化对象
     * 
     * @param newInstance
     */
    public void insert(T newInstance);

    /**
     * 更新游离态对象
     * 
     * @param transientObject
     */
    public void update(T transientObject);

    /**
     * 按主键删除对象
     * 
     * @param pk
     */
    public void delete(PK pk);

}
